当前位置:  开发笔记 > 编程语言 > 正文

为什么^和$不能按预期工作?

如何解决《为什么^和$不能按预期工作?》经验,为你挑选了1个好方法。

这让我困惑了最后15分钟:

if ('ab' =~ /^a|b$/) { print 't' } else { print 'f' }
print "\n";

我期望在开头之后跟随结尾的'a'或'b'应该只匹配一个字符.所以测试应该失败两个字符'ab'.但它成功了.为什么?



1> Wiktor Strib..:

如果您对交替进行分组,那么您将获得预期的行为:

/^(a|b)$/

你的正则表达式会a在字符串的开头(带^a分支)或b结尾(带b$分支)找到一个.

使用时^(a|b)$,锚点应用于整个组,因此它将匹配等于a或的字符串b.

另外,如果你不是真的需要捕捉的价值,你既可以使用非捕获组,/^(?:a|b)$/n修改,/^(a|b)$/n.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有